<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
<script>
	//https://muyiy.cn/blog/1/1.4.html#%E6%98%A8%E6%97%A5%E6%80%9D%E8%80%83%E9%A2%98%E8%A7%A3%E7%AD%94
  //题一：所有的赋值都是先创建值，再创建变量，最后用指针关联
  let a = {n:1};
  let b = a;
  a.x = a = {n:2};
  console.log("a.x="+a.x);//a.x=undefined
  console.log(b)//{n:1,x:{n:2}}
  console.log(a)//{n:2}
	//1、优先级。.的优先级高于=，所以先执行a.x，堆内存中的{n: 1}就会变成{n: 1, x: undefined}，改变之后相应的b.x也变化了，因为指向的是同一个对象。
  //2、赋值操作是从右到左，所以先执行a = {n: 2}，a的引用就被改变了，然后这个返回值又赋值给了a.x，需要注意的是这时候a.x是第一步中的{n: 1, x: undefined}那个对象，其实就是b.x，相当于b.x = {n: 2}
</script>
</html>